package com.competitions.videoedithelper.service;

import com.alibaba.fastjson.JSONObject;
import com.competitions.videoedithelper.entity.ResponseModel;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

/**
 * @author 盛旭雯
 */
public interface VideoProcessService {
    /**
     * 提取音频
     * @param videoId 视频id
     * @return 返回ResponseModel
     */
    ResponseModel extractAudio(int videoId);

    /**
     * 处理音频
     * @param audioId 前一步音频id
     * @param part 替换音频
     * @param begin 插入音频的开始时间（00:00:00）
     * @param end 插入音频的结尾时间（00:00:00）
     * @return 返回ResponseModel
     */
    ResponseModel modifyAudio(int audioId, MultipartFile part,String begin,String end);

    /**
     * 处理音频
     * @param sourceId 来源的音频id
     * @param begin1 音频片段开始时间
     * @param end1 音频片段结束时间
     * @param part 替换音频
     * @param begin2 替换音频的开始时间（00:00:00）
     * @param end2 替换音频的结尾时间（00:00:00）
     * @return 返回ResponseModel
     */
    ResponseModel modifyAudioSeg(int sourceId,String begin1,String end1, MultipartFile part,String begin2,String end2);

    /**
     * 截取音频
     * @param sourceId 来源的音频id
     * @param filePath 源音频路径
     * @param begin 插入音频的开始时间（00:00:00）
     * @param end 插入音频的结尾时间（00:00:00）
     * @return 返回ResponseModel
     */
    ResponseModel cutAudio(int sourceId,String filePath,String begin,String end);

    /**
     * 截取音频
     * @param data 批量修改数据
     * @return 返回ResponseModel
     */
    ResponseModel batchModification(JSONObject data);

    /**
     * 查找某个视频的所有修改后的音频
     * @param videoId 视频id
     * @return ResponseModel
     */
    ResponseModel selectEditedAudios(int videoId);

    /**
     * 删除修改后的音频
     * @param audioId 音频id
     * @return ResponseModel
     */
    ResponseModel deleteEditedAudio(int audioId);

    /**
     * 合成新视频
     * @param videoId 视频id
     * @param audioPath 音频路径
     * @return ResponseModel
     */
    ResponseModel combineVideo(int videoId,String audioPath) throws IOException;
}
